Data processing systems (including single-chip systems) which utilize one or more host processors (for example microprocessors) and one or more co-processors (for example further microprocessors or digital signal processors) under control of the host processor(s) are well known in the art. In such systems, a co-processor is typically configured to perform desired functions by storing associated program information in a ROM (or other program memory) of the co-processor. The operational capability of the co-processor thus corresponds to, and is limited by, the functionality defined by the program(s) stored in its ROM.
It therefore becomes advantageous to provide systems wherein the host processor(s) can dynamically download desired programs to the co-processor(s) in response to user requests. For example, a user of a mobile telephone might initially wish to configure the mobile telephone's co-processor(s) to perform speech coding functions in support of voice communications, and might later wish to configure the co-processor(s) to perform functions in support of wireless internet access. Accordingly, in this example, the host processor(s) would first download into the co-processor(s) a program or programs for configuring the co-processor(s) as a speech coder, and would thereafter download a program or programs for configuring the co-processor(s) as an internet access port.
Different programs (also referred to herein as objects) have different platform requirements, for example, program memory size, data memory size, clock speed, etc. Therefore, a given program may not be suitable for execution on a given co-processor. The suitability of a given program for execution on a given co-processor can be determined by a host processor before downloading the program to the co-processor, provided the program developer can provide to the host processor information indicative of the platform requirements of the program. In systems with multiple co-processors, the host processor may be able to use the platform requirement information at runtime to identify an available co-processor which satisfies the platform requirements of the program. The host processor can then download the program to the identified co-processor.
In conventional practice, non-program information has typically been stored separately from the executable file that contains the program. This practice disadvantageously dictates the use of an auxiliary data source for non-program information, for example an SQL engine, Microsoft's registry, or even a simple text file. This also disadvantageously requires that two separate files be handled, the executable and the non-program information file.
It is desirable in view of the foregoing to provide for efficient communication of non-program information, such as platform requirement information, from the program developer to the host processor at runtime.
The present invention provides for efficient communication of non-program information, e.g. platform requirement information, from the program developer to the host processor at runtime. The non-program information is integrated along with the corresponding program information into an executable file which is used by the host processor to download the program information to a selected co-processor.